﻿#region License

// PentaBiz - Sustainable Software Development Framework Copyright (C) 2013 Zoltán Csizmazia
// 
// This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 

#endregion

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Microsoft.Build.BuildEngine;

namespace PentaBiz.CsprojTool
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var path = Path.GetFullPath("..\\..\\..\\");

            var csprojs = Directory.GetFiles(path, "*.csproj", SearchOption.AllDirectories);

            var exluded = new[] {"PentaBiz.Tools"};
            foreach (var csproj in csprojs.Where(p => exluded.All(c => !p.Contains(c))))
            {
                Project project = new Project();
                project.Load(csproj);

                var propertyGroup = from pg in project.PropertyGroups.OfType<BuildPropertyGroup>()
                                    where !pg.IsImported
                                    select pg;


                foreach (var buildPropertyGroup in propertyGroup)
                {
                    //remove from Testing projects
                    //if (csproj.Contains("Testing"))
                    //{
                    //    if (buildPropertyGroup.Cast<BuildProperty>().Any(bp => bp.Name == "BuildPackage"))
                    buildPropertyGroup.RemoveProperty("BuildPackage");
                    //    continue;
                    //}
                    /*
                    //ensure added for rest
                    if (buildPropertyGroup.Condition.Contains("Release") || buildPropertyGroup.Condition.Contains("Debug"))
                    {
                        if (buildPropertyGroup.OfType<BuildProperty>().All(bp => bp.Name != "BuildPackage"))
                            buildPropertyGroup.AddNewProperty("BuildPackage", "true");
                    }*/
                }

                if (project.IsDirty)
                    project.Save(csproj);
            }
        }
    }
}